<?PHP

/**
 * Class Article_model
 */
class Article_model extends CI_Model {

    /**
     * Variable de la classe.
     */
    //* Variable publique contenant le nom de la table.
    public $table = 'articles';

    /**
     * CONSTRUCTEUR PAR DEFAUT DE LA CLASSE Produit_model
     * @author Brice MACHU
     * @since 1.0
     * @return 
     */
    function __construct() {
        parent::__construct();
    }

    /**
     * Fonction qui ajoute un article
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function insert($data) {
        $this->db->trans_start();

        $this->db->query('INSERT INTO articles (title, description) VALUES("'.$data['title'].'", "'.$data['description'].'")');
        $table = $this->db->insert_id();

        $this->db->query('INSERT INTO prices (price_article_id, price_amount) VALUES(' . $table . ',"'.$data['price_amount'].'")');

        $this->db->trans_complete();
    }

    /**
     * Fonction qui met à jour un article
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function update($id, $data) {
        $this->db->set($data);
        $this->db->where('articles.article_id', $id);
        $this->db->where('prices.price_article_id = articles.article_id');
        $this->db->update('articles as articles, prices as prices');
    }

    /**
     * Fonction qui supprime un article
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function delete($id) {
        //Suppression de la base de données
        $this->db->where('article_id', $id);
        $this->db->delete($this->table);
        $this->db->where('prices.price_article_id', $id);
        $this->db->delete('prices');
    }

    /**
     * Fonction qui permet de récupèrer les infos d'un article
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function get($id) {
        $this->db->where('articles.article_id', $id);
        $this->db->join('images i', 'i.image_article_id = articles.article_id', 'left');
        $this->db->join('prices p', 'p.price_article_id = articles.article_id', 'left');
        $query = $this->db->get($this->table);
        return $query->row();
    }

    /**
     * Fonction qui permet de récupèrer les infos suivants une clause WHERE
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function getWhere($where) {
        $this->db->where($where);
        $query = $this->db->get($this->table);
        return $query->result();
    }

    /**
     * Fonction qui permet de récupèrer tous les articles
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function getAll() {
        $q = $this->db->select('*')->from('articles a')
                ->join('prices p', 'p.price_article_id = a.article_id', 'left')
                ->join('images i', 'i.image_article_id = a.article_id', 'left')
                ->order_by('a.article_id', 'desc')
                ->get();

        if ($q->num_rows() > 0) {
            foreach ($q->result() as $row) {
                $data[] = $row;
            }
            return $data;
        }
    }

    /**
     * Fonction qui permet de récupèrer le nombre d'événements d'un client
     * @author Brice MACHU
     * @since 1.0
     * @return
     */
    function countAll() {
        return $this->db->count_all($this->table);
    }

}